﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

using hou_elearning.Business;
using hou_elearning.Entity;
using System.Data;
using System.IO;

public partial class lop_hoc_Default : System.Web.UI.Page
{
    KhoahocEntity oKhoahoc = null;
    protected void Page_Load(object sender, EventArgs e)
    {
        //Session["KhoahocID"] = 2;
        loadControl();
        if(!IsPostBack)
        {
            //napThongtinkhoahoc(); //Hiển thị thông tin khóa học
            if (kiemTraQuyenVaoLop() == true)
            {
                napRptBaihocSlide(); //Hiển thị mục lục các bài học>Slide
                panMucluc.Visible = true;
            }
        }
    }

    /// <summary>
    /// Load control để hiện thị theo tham số page
    /// </summary>
    /// <author>liemqv</author>
    /// <create>09/06/2012</create>
    /// 
    public void loadControl()
    {
        string strPathControl = "~/Admin/control/"; // thư mục admin
        String strPage = "";
        foreach(Control ct in content_main.Controls)
        {
            content_main.Controls.Remove(ct);
        }
        try
        {

            strPage = Request.QueryString["page"];
            if (strPage != null)
            {
                /* Tham số control cần hiển thị 
                 * Phải cộng thêm uc vào trước vì ở trên thanh địa chỉ ta sẽ bỏ chữa uc ở trước
                 * Tham số sẽ có dạng sau: Content.aspx?page=Quanlyquyen, thì ta sẽ tìm được User Control ucQuanlyquyen.ascx
                 */
                strPathControl += "uc" + strPage + ".ascx";
                /* Nếu tồn tại User control này thì hiển thị control mặc định */
                if (File.Exists(Server.MapPath(strPathControl)) == false)
                {
                    strPathControl = "~/Admin/control/ucAboutUs.ascx";
                    divThongbao.InnerHtml = "<p class='info' id='error'><span class='info_inner'>Không tồn tại trang " + strPage + "!</span></p>";
                }
                /* Load và hiển thị control */
                Control ctrl = LoadControl(strPathControl);
                if (ctrl != null)
                {
                    content_main.Controls.Add(ctrl);
                }
            }
        }
        catch (Exception ex)
        {
            strPathControl = "~/Admin/control/ucAboutUs.ascx";
            Control ctrl = LoadControl(strPathControl);
            if (ctrl != null)
            {
                content_main.Controls.Add(ctrl);
            }
            divThongbao.InnerHtml = "<p class='info' id='error'><span class='info_inner'>Không tồn tại trang " + strPage + "!</span></p>";
        }
    }

    /// <summary>
    /// Hàm kiểm tra người dùng hiện tại có quyền vào xem khóa học hay không
    /// </summary>
    /// <author>liemqv</author>
    /// <create>29/05/2012</create>
    /// 
    public Boolean kiemTraQuyenVaoLop()
    {
        Boolean bRes = false;
        Int64 PK_iHocvienID = iGetUserLogin();
        Int64 PK_iKhoahocID = iGetFK_iKhoahocID();
        List<Khoahoc_HocvienEntity> lstKhoahocHocvien = Khoahoc_HocvienBRL.GetByFK_iKhoahocID(PK_iKhoahocID);
        lstKhoahocHocvien = lstKhoahocHocvien.FindAll(
            delegate(Khoahoc_HocvienEntity oKhoahocHocvien)
            {
                return (oKhoahocHocvien.FK_iHocvienID == PK_iHocvienID);
            }
        );
        if(lstKhoahocHocvien.Count > 0)
        {
            bRes = true;
        }
        lstKhoahocHocvien = null;
        return bRes;
    }
    /// <summary>
    /// Lấy ID người dùng đăng nhập
    /// </summary>
    /// <author>liemqv</author>
    /// <create>25/04/2012</create>
    /// 
    public Int64 iGetUserLogin()
    {
        Int64 PK_iNguoidungID = 0;
        try
        {
            if (Session["UserID"] != null)
            {
                PK_iNguoidungID = Int64.Parse(Session["UserID"].ToString());
            }
        }
        catch (Exception ex)
        {
            PK_iNguoidungID = 0;
        }
        return PK_iNguoidungID;
    }
    /// <summary>
    /// Hàm lấy FK_iKhoahocID từ thanh địa chỉ
    /// </summary>
    /// <author>liemqv</author>
    /// <create>25/05/2012</create>
    /// 
    public Int64 iGetFK_iKhoahocID()
    {
        Int64 iRes = 0;
        if(Session["KhoahocID"] != null)
        {
            try
            {
                iRes = Int64.Parse(Session["KhoahocID"].ToString());
            }
            catch(Exception ex)
            {

            }
        }

        return iRes;
    }

    /// <summary>
    /// Nạp thông tin khóa học
    /// </summary>
    /// <author>liemqv</author>
    /// <create>29/05/2012</create>
    /// 
    public void napThongtinkhoahoc()
    {
        if (Session["KhoahocID"] == null)
        {
            Response.Redirect("~/?page=Danhsachkhoahoc");
        }
        String strPathControl = "~/Controls/ucChitietkhoahoc.ascx";
        Control ctrl = LoadControl(strPathControl);
        if (ctrl != null)
        {
            content_main.Controls.Add(ctrl);
        }
    }

    /// <summary>
    /// Hàm nạp danh sách bài học cho rpt
    /// </summary>
    /// <author>liemqv</author>
    /// <create>25/05/2012</create>
    /// 
    public void napRptBaihocSlide()
    {
        Int64 FK_iKhoahocID = iGetFK_iKhoahocID();
        /* Hiển thị tên khóa học */
        KhoahocEntity oKhoahoc = KhoahocBRL.GetOne(FK_iKhoahocID);
        lblTenkhoahoc.Text = oKhoahoc.sTenkhoahoc;
        /* Nạp dữ liệu cho rpt */
        List<BaihocEntity> lstBaihoc = null;
        BaihocEntity oBaihoc = null;
        List<Khoahoc_BaihocEntity> lstKhoahocBaihoc = Khoahoc_BaihocBRL.GetByFK_iKhoahocID(FK_iKhoahocID);
        if(lstKhoahocBaihoc.Count > 0)
        {
            lstBaihoc = new List<BaihocEntity>();
            for(int i=0; i<lstKhoahocBaihoc.Count; ++i)
            {
                oBaihoc = BaihocBRL.GetOne(lstKhoahocBaihoc[i].FK_iBaihocID);
                lstBaihoc.Add(oBaihoc);
            }
        }
        rptBaihoc.DataSource = lstBaihoc;
        rptBaihoc.DataBind();
        lstKhoahocBaihoc = null;
        lstBaihoc = null;
    }
    protected void rptBaihoc_ItemDataBound(object sender, RepeaterItemEventArgs e)
    {
        BaihocEntity oBaihoc = new BaihocEntity();
        SlideEntity oSlide = null;
        Int64 FK_iKhoahocID = iGetFK_iKhoahocID();
        Label lblGiohoc = null;
        List<Baihoc_SlideEntity>  lstBaihocSlide = null;
        List<SlideEntity> lstSlide = new List<SlideEntity>();
        RepeaterItem item = e.Item;
        if ((item.ItemType == ListItemType.Item) ||
            (item.ItemType == ListItemType.AlternatingItem))
        {
            lstBaihocSlide = null;
            Repeater rptSlide = (Repeater)item.FindControl("rptSlide");
            lblGiohoc = (Label)item.FindControl("lblGiohoc");
            oKhoahoc = KhoahocBRL.GetOne(FK_iKhoahocID);
            oBaihoc = (BaihocEntity)item.DataItem;
            //Giờ học

            if (oKhoahoc.iTrangthai == 1) //Nếu khóa học quy định thời gian thì kiểm tra ẩn/hiện danh sách bài học
            {
                Khoahoc_BaihocEntity oKhoahocBaihoc = Khoahoc_BaihocBRL.GetByFK_iKhoahocIDAndFK_iBaihocID(FK_iKhoahocID, oBaihoc.PK_iBaihocID)[0];
                LichhocEntity oLichhoc = LichhocBRL.GetByFK_iKhoahoc_BaihocID(oKhoahocBaihoc.PK_iKhoahoc_BaihocID)[0];
                DateTime dNgayhoc = oLichhoc.dNgayhoc;
                DateTime dGiobatdau = oLichhoc.dGiobatdau;
                DateTime dGioketthuc = oLichhoc.dGioketthuc;
                if(dNgayhoc.ToString("dd/MM/yyyy").CompareTo(DateTime.Now.ToString("dd/MM/yyyy")) < 0) //Quá ngày
                {
                    lblGiohoc.Text = "(Bài học đã kết thúc)";
                }
                else
                    if(dNgayhoc.ToString("dd/MM/yyyy") == DateTime.Now.ToString("dd/MM/yyyy")) //Cùng ngày
                    {
                        String str1 = dGioketthuc.ToString("HH:mm");
                        String str2 = DateTime.Now.ToString("HH:mm");
                        String str3 = "";
                        int id = str1.CompareTo(str2);
                        if (dGioketthuc.ToString("HH:mm").CompareTo(DateTime.Now.ToString("HH:mm")) < 0)
                        {
                            lblGiohoc.Text = "(Bài học đã kết thúc)";
                        }
                        else
                        {
                            lblGiohoc.Text = "(giờ học: " + oLichhoc.dGiobatdau.ToString("HH:mm") + " - " + oLichhoc.dGioketthuc.ToString("HH:mm") + " " + oLichhoc.dNgayhoc.ToString("dd/MM/yyyy") + ")";
                            if ((dGioketthuc.ToString("HH:mm").CompareTo(DateTime.Now.ToString("HH:mm")) > 0) && (dGiobatdau.ToString("HH:mm").CompareTo(DateTime.Now.ToString("HH:mm"))) < 0) //Trong khoảng thời gian học
                            {
                                //Nếu trong khoảng thời gian học mới hiện danh sách slide
                                if (oBaihoc != null)
                                {
                                    Int64 FK_iBaihocID = oBaihoc.PK_iBaihocID;
                                    lstBaihocSlide = Baihoc_SlideBRL.GetByFK_iBaihocID(FK_iBaihocID);
                                    if (lstBaihocSlide.Count > 0)
                                    {
                                        for (int i = 0; i < lstBaihocSlide.Count; ++i)
                                        {
                                            oSlide = SlideBRL.GetOne(lstBaihocSlide[i].FK_iSlideID);
                                            lstSlide.Add(oSlide);
                                        }
                                    }
                                }
                            }
                        }
                    }
                else
                {
                    lblGiohoc.Text = "(giờ học: " + oLichhoc.dGiobatdau.ToString("HH:mm") + " - " + oLichhoc.dGioketthuc.ToString("HH:mm") + " " + oLichhoc.dNgayhoc.ToString("dd/MM/yyyy") + ")";
                }
                oKhoahocBaihoc = null;
                oLichhoc = null;
            }
            else //Nếu không quy định thời gian thì hiện toàn bộ
            {
                Int64 FK_iBaihocID = oBaihoc.PK_iBaihocID;
                lstBaihocSlide = Baihoc_SlideBRL.GetByFK_iBaihocID(FK_iBaihocID);
                if (lstBaihocSlide.Count > 0)
                {
                    for (int i = 0; i < lstBaihocSlide.Count; ++i)
                    {
                        oSlide = SlideBRL.GetOne(lstBaihocSlide[i].FK_iSlideID);
                        lstSlide.Add(oSlide);
                    }
                }
            }
            rptSlide.DataSource = lstSlide;
            rptSlide.DataBind();
        }
        oBaihoc = null;
        lstBaihocSlide = null;
        oSlide = null;
        lstSlide = null;
    }
}
//End